import request from 'luch-request'
import { toFormData } from '@/utils/util'

import axios from 'axios'
// let baseUrl = indexConfig.baseUrl; // 'http://192.168.165.46:5201'

// let baseUrl = 'http://192.168.165.65:8923' //开发环境下已经在manifest.json代理

const getTokenStorage = () => {
	let token = ''
	try {
		token = uni.getStorageSync('token')
	} catch (e) {}
	return token
}

const http = new request()

/* 设置全局配置 */
http.setConfig((config) => {
	// config.baseURL = baseUrl
	// console.info(`config.header:`, config.header)
	// console.info(`config1:`, config)
	config.header = {
		...config.header
		// Authorization: 'Basic ' + userInfo.access_token || ''
		//
		//   a: 1, // 演示
		//   b: 2 // 演示
	}
	return config
})

/* 请求之前拦截器。可以使用async await 做异步操作 */
http.interceptors.request.use(
	(config) => {
		config.header = {
			...config.header
			// token: getTokenStorage()//TODO:后期开启token可以启用
		}
		let userInfo = uni.getStorageSync('userInfo')
		if (userInfo && config.url.indexOf('/geoserver') > -1) {
			// config.header.Authorization = 'Basic ' + userInfo.access_token || ''
			config.header['X-Credentials'] = 'private-user=smuser'
			config.header['Y-credentials'] = 'private-pw=sanming@123'
		} else {
			config.header.Authorization = 'Bearer ' + userInfo.access_token || ''
		}
		/*
 if (!token) { // 如果token不存在，return Promise.reject(config) 会取消本次请求
   return Promise.reject(config)
 }
 */
		return config
	},
	(config) => {
		return Promise.reject(config)
	}
)

/* 请求之后拦截器。可以使用async await 做异步操作  */
http.interceptors.response.use(
	async (response) => {
		// if (response.data.code !== 200) {
		//   // 服务端返回的状态码不等于200，则reject()
		//   uni.showToast({
		//     icon: "error",
		//     title: "获取失败",
		//   });
		//   return Promise.reject(response);
		// }
		return response.data
	},
	(response) => {
		// 请求错误做点什么。可以使用async await 做异步操作
		console.error(response)
		// uni.showToast({
		// 	icon: 'error',
		// 	title: '获取失败'
		// })
		return Promise.reject(response)
	}
)

//TODO:后期可以实例其他的request，如：const test = new request(),同上实现拦截等

export const baseRequest = (url, value = {}, method = 'post', options = {}) => {
	// url = sysConfig.API_URL + url
	if (method === 'post') {
		return http.post(url, value, options)
	} else if (method === 'get') {
		return http.get(url, {
			params: value,
			...options
		})
	}
}

// 创建 axios 实例
const axiosRequest = axios.create({
	// API 请求的默认前缀
	timeout: 120 * 1000 // 请求超时时间
})
// request interceptor
axiosRequest.interceptors.request.use((config) => {
	// const token = storage.get(ACCESS_TOKEN)
	// 如果 token 存在
	// 让每个请求携带自定义 token 请根据实际情况自行修改
	// if (token) {
	// 	// config.headers['Access-Token'] = token
	// }
	return config
})

// response interceptor
axiosRequest.interceptors.response.use((response) => {
	return response.data
})
export {
	http,
	axiosRequest
	// test
}
